package tarea2.managedbeans;

import Negocio.InterfazNegocio;
import entidades.Administrativo;
import entidades.ListaDeEspera;
import entidades.Paciente;
import java.util.List;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

@Named
@ApplicationScoped
public class ControlListaEspera {

    private int numPacientes = 0;
    private String nombre;
    private int lista;
    @Inject
    private InterfazNegocio negocio;

    public ControlListaEspera() {

    }

    public String crearLista() {
        InterfazNegocio.Error e;
        ListaDeEspera list = new ListaDeEspera(nombre);
        e = negocio.crear_Lista_Espera(list);
        switch (e) {
            case ERROR_LISTA_REPETIDA:
                FacesContext ctx = FacesContext.getCurrentInstance();
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Lista de espera ya existe en la base de datos", "Lista de espera ya existe en la base de datos"));
        }
        return null;
    }

    public String anadirPacienteLista(Paciente pac) {
        InterfazNegocio.Error e;
        FacesMessage fm;
        e = negocio.insertar_Lista_Espera(pac, lista().get(lista));
        switch (e) {
            case NO_EXISTE_LISTA_ESPERA:
                fm = new FacesMessage("Lista de espera no existe");
                break;
            case ERROR_USUARIO_REPETIDO:
                FacesContext ctx = FacesContext.getCurrentInstance();
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Usuario ya existe en la lista de espera", "Usuario ya existe en la lista de espera"));        
                break;
        }
        return null;
    }
    
        public String eliminarPacienteLista(Paciente pac,ListaDeEspera l) {
        InterfazNegocio.Error e;
        FacesMessage fm;
        e = negocio.eliminar_Paciente_Lista_Espera(pac, l);
        switch (e) {
            case NO_EXISTE_LISTA_ESPERA:
                fm = new FacesMessage("Lista de espera no existe");
                break;
            case NO_PACIENTE_LISTA_ESPERA:
                FacesContext ctx = FacesContext.getCurrentInstance();
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Usuario no existe en la lista de espera", "Usuario no existe en la lista de espera"));        
                break;
        }
        return null;
    }

    public List<ListaDeEspera> lista() {
        return negocio.getListaEspera();
    }

    public String eliminarAdministrativo(Administrativo ad) {
        InterfazNegocio.Error e;
        e = negocio.eliminarUsuario(ad);
        return null;
    }

    public int getNumPacientes() {
        return numPacientes;
    }

    public void setNumPacientes(int numPacientes) {
        this.numPacientes = numPacientes;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getLista() {
        return lista;
    }

    public void setLista(int lista) {
        this.lista = lista;
    }

    public InterfazNegocio getNegocio() {
        return negocio;
    }

    public void setNegocio(InterfazNegocio negocio) {
        this.negocio = negocio;
    }

}
